約 2,314,938 件
https://w.atwiki.jp/hid_ahk/pages/2.html
メニュー HID Macros と Autohotkey を連携させる テンキーをF13~F24にする 今日: - 昨日: - 更新履歴 取得中です。
https://w.atwiki.jp/hid_ahk/
HID Macros と Autohotkey を連携させる HID Macros と Autohotkey を連携させる MagicKeyPadの後継ソフトが公開されました。(2012年8月末) HID Macros と Autohotkey を連携させ、USBテンキーをカスタマイズする場合の例概念 HID MacrosとAutoHotkeyと連携させる理由 (1) AutoHotkey と HID Macros と SFC mini をインストール (2) USBテンキー(USBデバイス)を接続する (3) Hid Macros の設定を確認する (4) Hid Macros の設定 Routines (5) ahk_hidmacros.ahk を作成する (6) ahk_hidmacros.ahk を実行し、スクリプトを取得する (7) Hid Macros のキー毎の設定 その1 基本設定はここまでです。これ以降はAutoHotkeyを扱えることが前提となります。(8-0-1) このページ内のAutohotkey スクリプトサンプルについて (8-0-2) スクリプトファイルのファイルエンコーディングについて (8-1) キー割り当てを設定するスクリプトのサンプル (8-2) USBデバイスごとに設定(分岐)するスクリプトのサンプル (8-3) アプリ毎に設定(分岐)するスクリプトのサンプル その1 (8-4) アプリ毎に設定(分岐)するスクリプトのサンプル その2 (8-5) キーの押しっぱなし部分を関数化し、追加や編集を簡単にするサンプル (8-6) キーマップを切り替えるサンプル (8-7)キーの同時押し(0キーを押しながら1キー等)に割り当てるサンプル (9-1) USBテンキーのEnterキーが NumpadEnter or Enter のどちらなのかを調べる 更新履歴など MagicKeyPadの後継ソフトが公開されました。(2012年8月末) USBテンキー用(USBテンキー以外も可)のカスタマイズツールMagicKeyPadの(非公認)後継ソフトとしてHidKeySequence(http //hks.wktk.so/)が公開されました。公式サイトが閉鎖したようなので2次配布先はこちら。作者様に感謝致します。MagicKeyPadの代替えの1つになればと思って作ったこのサイトですが、USBテンキー以外のHID(ヒューマンインターフェイスデバイス)でこのサイトを参考にされている方がいらっしゃるようなのでそのまま残します。 HID Macros と Autohotkey を連携させ、USBテンキーをカスタマイズする場合の例 概念 2chの「CG用補助入力総合」スレにMagicKeyPadというUSBテンキーをデバイスごとにカスタマイズ出来る(※USBキーボードと同じキーコードを吐くUSBデバイスなら何でもOKなので通常のUSBキーボードやNostromo SpeedPad N52もカスタマイズ可能)超便利なソフトがうpさたので有難く使わせて頂いておりました。しかし、32bit OSまでしか対応しておらず、64bit対応が求められていましたが、様々な事情(理由の1つとして64bit対応するためにはM$にお布施が必要?)で64bit未対応です。そこでHID MacrosならMagicKeyPadの代わりになるんじゃないかというレスが同スレにあり、Autohotkeyと連携できそうだったのでこのサイトを作りました。(2011年12月) HID Macrosだけではキーの押しっぱなしやキーマップ切り替え等は出来ませんが、AutoHotkeyを連携させればそれらを行うことができます。 HID Macrosはキーインプット(どのデバイスのどのキーを押したか)の識別のみ行い、その後の処理(キー割り当て変更等)を全てAutoHotkeyで処理するようにします。 手順(1)~(7)に書いてある通りに従ってそのままやってもらうだけで連携に必要な基本設定は終わります。キー割り当て、アプリごとの設定、キーマップ切り替え等はAutoHotkeyで行いますので、AutoHotkeyを扱ったことがないと厳しいと思います。手順(8-x)にサンプルっぽいものを書いていますが、スクリプト系を全く扱ったことがないと解かりにくい(解らない)のでAutoHotkeyを触ってみていろいろ試してください。 HID MacrosとAutoHotkeyと連携させる理由 HID MacrosはフライトシュミレーターX用に作られたツールであり、ゲーム設定でキー押しっぱなしが設定出来るため、HID Macrosの機能として実装しないようなのでAutohotkeyでキー押しっぱなし等を出来るようにします。。 HID MacrosはVBScriptやJScriptが使えるのでそのスクリプトが書ければHID Mascrosだけで出来るかもしれませんが、VBScriptやJScriptが解らないので代わりにAutoHotkeyを使います。 (1) AutoHotkey と HID Macros と SFC mini をインストール AutoHotkey(AutoHotkey_L)をインストール。※私はAutohotkey(開発停止)を利用していますが、現在の主流はAutoHotkey_Lです(開発が本家からL版へと引き継がれた)。 HID Macros をインストール。 SFC mini をインストール。HID Macros(VBScript)でWinApiを簡単に利用するためにインストールします。VBScriptとWinApiは(1)~(7)の基本設定を行うために必要なだけで、それ以外ではVBScriptとWinApiを使う必要ありません。また、(1)~(7)に書いてある通りに従ってそのままやってもらうだけで連携に必要な基本設定は終わります。 (2) USBテンキー(USBデバイス)を接続する USBテンキー(USBデバイス)を接続する。※(1)の前に接続していても可 <補足説明> NumLock非連動(現在の主流?)タイプのUSBテンキーの場合、キーボードとUSBテンキーのNumLock状態が異なるとNumLockのキーコードを自動で送る仕組みになっています。 例えばキーボードがNumLock OffでUSBテンキーがNumLock Onの場合、USBテンキーの1を押すとUSBテンキーは以下のようにキーコードを発行します。 「NumLock On → テンキーの1 → NumLock Off」 逆にキーボードのNumLockがOn、USBテンキーがNumLock Offの場合、 「NumLock Off → テンキーの1 → NumLock On」 というキーコードを発行しています。 これが非連動の仕組み(仕様)です。 このようにNumLockを自動で送らせないようにするにはキーボードとUSBテンキーのNumLock状態を常に同じにしておく必要があります。 また、NumLock On と Off の状態ではテンキーのキーコードが異なるため、HID Macrosへのキー登録、及び利用時はいつも同じ状態にしておくことを推奨します。 (3) Hid Macros の設定を確認する Hid Macros を起動し、Hid Macrosのウィンドウを開く。 Hid Macros の「Settings」タブの Scritp のところにある Language を初期値(VBScript)にする。 ※「General」のところにある Language ではないので注意。 (4) Hid Macros の設定 Routines ①Hid Macros の「Script」タブを選択する ②下記スクリプトを「Routines」にコピペする ③右下の「Compile」をクリックする (左下の赤丸●が緑丸●に変わったらOK) Dim hWnd Dim FindWindow Dim PostMessage Set FindWindow = CreateObject("SfcMini.DynaCall") FindWindow.Declare "user32","FindWindow" Set PostMessage = CreateObject("SfcMini.DynaCall") PostMessage.Declare "user32","PostMessage" (5) ahk_hidmacros.ahk を作成する ahk_hidmacros.ahk をダウンロードするAutohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。ダウンロードした場合は以下を読み飛ばして手順(6)へ進んでも大丈夫です。 ahk_hidmacros.ahk を作成する。 ※フォルダオプションで全ての拡張子を表示するようにしている場合の説明です。 デスクトップやフォルダの何も無いところを右クリック → 新規作成 → Autohotkey Script を選択 → 名前を ahk_hidmacros.ahk にする。 もしくは 新規作成 → テキストドキュメント を選択 → 名前を ahk_hidmacros.ahk にする。 要するに ini、xml、dat、xls 等なんでもいいので新規ファイルを作成し、名前を ahk_hidmacros.ahk にすればOKです。 次にテキストエディタで ahk_hidmacros.ahk を開き、下記21行を貼付ける(下記21行に全て置き換える)。 上書き保存する。※Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。 #SingleInstance, Force #Persistent OnMessage(99999, "HidMacros") Menu, Tray, Add , GetScript return ; Autoexecセクション はここまで GetScript ; スクリプトをクリップボードにコピーする DetectHiddenWindows, On SetTitleMatchMode,RegEx Hwnd = WinExist(".*\\ahk_hidmacros.ahk\s-\sAutoHotkey.* ahk_class AutoHotkey") WinGetTitle, WinTitle, ahk_id %Hwnd% Clipboard = hWnd = FindWindow ( "AutoHotkey", `"%WinTitle%`" ) Clipboard = %Clipboard%`nIf hWnd then`n Call PostMessage(hWnd, 99999, 1, 1 ) Clipboard = %Clipboard%`nEnd If msgbox, %Clipboard%`nをクリップボードにコピーしました。 DetectHiddenWindows, Off return HidMacros(wParam, lParam) { msgbox, ahk_hidmacros.ahkのテストです`nwParam = %wParam%`nlParam = %lParam% } Autoexecセクションに記述した OnMessage(99999, "HidMacros") はHID Macrosからのメッセージを受け取る重要な部分です。 OnMessageの第1引数 99999 を16進数にするとHidmacrosとahkで値が異なる場合(処理の違い)があるので特に問題や拘りがなければ 99999 のままにしておいてください。 OnMessageの第2引数("HidMacros" の部分)はファンクション名なので好きな名称でOKです(ファンクション名は半角のみが有効であり、全角は使用不可です。また頭文字はアルファベットでなければなりません。2文字目以降は数字や _ アンダーバーが使えます)。但し、ファンクション名を変更する場合、手順(9-1)以降のファンクション名(関数名)を書き換え、統一してください。よく分からない場合は HidMacros のままにしておいてください。 (6) ahk_hidmacros.ahk を実行し、スクリプトを取得する ①手順(5)で作成した ahk_hidmacros.ahk を実行(ダブルクリック)する。 ②タスクトレイにアイコン(緑の背景に H マークのアイコン)があるはずなので右クリックする。 ③「GetScript」を選択(クリック)してください。 これで手順(7-1)で必要なVBスクリプトがクリップボードにコピーされました。 クリップボードにコピーされたものは下記と同じはずです("AutoHotkeyスクリプトのウィンドウタイトル"部分は環境によって異なります。) hWnd = FindWindow ( "AutoHotkey","AutoHotkeyスクリプトのウィンドウタイトル" ) If hWnd then Call PostMessage(hWnd, 99999, 1, 1 ) End If (7) Hid Macros のキー毎の設定 その1 ペイントツールSAI用に設定する場合はこちらを参照してください。 「どのUSBデバイスのどのキーを押したのか」という情報をAutoHotkey(ahk_hidmacros.ahk)へ伝える命令を登録します。 ①「Macros」タブを選択 ②「New」をクリック ③好きな名称(自分で判りやすい名称)を付ける。 例 Tenkey1 ※名称を変更せず「New Macro」のままでも問題はありません。 ④Edit Macroのところにある「Scan」をクリック ⑤USBテンキーの1キー(または他のキー)を押す ⑥Action のところの「Scripted」を選択する ⑦手順(6)で取得したVBスクリプトを貼り付ける ⑧右下の「Compile」をクリック(赤丸●から緑丸●になればOK) ⑨手順⑤で押したキーを押し、メッセージボックスに「ahk_hidmacros.ahkのテストです」と表示されるのを確認する。 ※メッセージが表示されない場合はここまでの手順のどこかで間違っている可能性が高いです。 ⑩メッセージが表示されるのを確認できたら下記表を参考に①~⑨を繰り返し、USBテンキーのキーを全て追加(登録)する。 ※"AutoHotkeyスクリプトのウィンドウタイトル"部分は環境によって異なります。 ※数値の入力は半角のみOKです。全角はダメです。 hWnd = FindWindow ( "AutoHotkey", "AutoHotkeyスクリプトのウィンドウタイトル" ) If hWnd then Call PostMessage(hWnd, 99999, 1, 2) それぞれに応じて第四引数(lParam)を編集する。 End If USBテンキーのキー wParam(第3引数) lParam(第4引数) PostMessage(hWnd, msg, wParam, lParam) 1 1 1 PostMessage(hWnd, 99999, 1, 1) 2 2 PostMessage(hWnd, 99999, 1, 2) 3 3 PostMessage(hWnd, 99999, 1, 3) 4 4 PostMessage(hWnd, 99999, 1, 4) 5 5 PostMessage(hWnd, 99999, 1, 5) 6 6 PostMessage(hWnd, 99999, 1, 6) 7 7 PostMessage(hWnd, 99999, 1, 7) 8 8 PostMessage(hWnd, 99999, 1, 8) 9 9 PostMessage(hWnd, 99999, 1, 9) 0 10 PostMessage(hWnd, 99999, 1, 10) .(ドット) 11 PostMessage(hWnd, 99999, 1, 11) Tab 12 PostMessage(hWnd, 99999, 1, 12) / 13 PostMessage(hWnd, 99999, 1, 13) * 14 PostMessage(hWnd, 99999, 1, 14) BackSpace 15 PostMessage(hWnd, 99999, 1, 15) - 16 PostMessage(hWnd, 99999, 1, 16) + 17 PostMessage(hWnd, 99999, 1, 17) Enter 18 PostMessage(hWnd, 99999, 1, 18) ここで少し解説。 PostMessage の引数について(※このPostMessageを使ってAutoHotkeyに伝えています) ※引数に利用する変数(変数名)や数値の入力は半角のみOKです。全角はダメです。 第一引数は hWnd = メッセージの送り先のハンドルウィンドウ(ID)を指定します。 ここでは hWnd のままでOKです。(hWndという変数にIDを代入している) 第二引数は msg = ウィンドウメッセージ番号であり、送信側と受信側で同じ番号を指定します。 ここでは 99999 で固定しています。 第三引数は wParam = メッセージ引数。ここではUSBデバイスを判別させるために利用しています。 ※USBテンキーなら wParam = 1 (第三引数を 1 )ということにします。 ※wParam = 1 にしていますが、値は 0~4294967295 の整数なら何でもOKです。 ※USBテンキーを複数利用する場合、2台目を wParam = 2 、3台目を wParam = 3 というようにすると分り易いと思います。 第四引数は lParam = メッセージ引数。ここでは押したキーを判別させるために利用しています。 基本設定はここまでです。これ以降はAutoHotkeyを扱えることが前提となります。 (8-0-1) このページ内のAutohotkey スクリプトサンプルについて 「Autohotkey サンプル」等の検索キーワードで訪れた方に補足しますが、このページ内のサンプルはAutohotkeyを使った通常のキーカスタマイズ方法ではなく、HID Macrosと連携させることを前提にしたサンプルを掲載しています。よって下記のような基本的なキーカスタマイズの解説やサンプルはありませんのでご注意を。 a b ; a を b にリマップする(置き換える) a send,b ; a を押したら b を送る (8-0-2) スクリプトファイルのファイルエンコーディングについて アップロードしているスクリプトサンプルは全てShift JIS形式で保存しています。よって、そのままだとAutohotkey_L Unicode版(以後、L版)で動作しません。L版で利用するにはスクリプトサンプル(ahk_hidmacros.ahk)をテキストエディタ(NotePad等)で開き、 UTF-8 形式で保存(上書き保存)してから利用してください。参考サイト:テキストをUTF-8形式で保存する。 (8-1) キー割り当てを設定するスクリプトのサンプル +←サンプルを表示する #SingleInstance, Force #Persistent OnMessage(99999, "HidMacros") Menu, Tray, Add , GetScript return ; Autoexecセクション はここまで GetScript ; スクリプトをクリップボードにコピーする DetectHiddenWindows, On SetTitleMatchMode,RegEx Hwnd = WinExist(".*\\ahk_hidmacros.ahk\s-\sAutoHotkey.* ahk_class AutoHotkey") WinGetTitle, WinTitle, ahk_id %Hwnd% Clipboard = hWnd = FindWindow ( "AutoHotkey", `"%WinTitle%`" ) Clipboard = %Clipboard%`nIf hWnd then`n Call PostMessage(hWnd, 99999, 1, 1 ) Clipboard = %Clipboard%`nEnd If msgbox, %Clipboard%`nをクリップボードにコピーしました。 DetectHiddenWindows, Off return ; HidMacros( [wParam, lParam, msg, hwnd] ) 引数は省略可 HidMacros(wParam, lParam) { ; 第三と第四引数は必要ないので省く。 If ( lParam = 1 ) { ; テンキー1 なら send, {space down} ; spaceを押し下げる ※Saiなら手のひらツール keywait, Numpad1 ; テンキーの1を開放するまで待つ send, {space up} ; spaceを放す } Else If ( lParam = 2 ) { ; テンキー2 なら send, {alt down} ; Altを押し下げる ※Saiならスポイト keywait, Numpad2 ; テンキーの2を開放するまで待つ send, {alt up} ; Altを放す } Else If ( lParam = 3 ) { ; テンキー3 なら send, {alt down}{space down} ; AltとSpaceを押し下げる ※Saiならビュー回転 keywait, Numpad3 ; テンキーの3を開放するまで待つ send, {space Up}{alt up} ; AltとSpaceを放す } } このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) ahk_hidmacros.ahk の Autoexecセクション以外(以降)に wParam 及び lParam の値ごと(デバイスとキーごと)に分岐させるスクリプトを記述してください。 ahk_hidmacros.ahk(スクリプト)の編集が終わったら上書き保存し、ahk_hidmacros.ahk を再実行してください。 AutoHotkeyで使うキーリスト (8-2) USBデバイスごとに設定(分岐)するスクリプトのサンプル +←サンプルを表示する ;この最初の部分は手順(5)と同一なので省略します HidMacros(wParam, lParam) { If ( wParam = 1 ) { ; USBテンキーAなら If ( lParam = 1 ) { ; USBテンキーAの 1 なら send, {space down} ; spaceを押し下げる ※Saiなら手のひらツール keywait, Numpad1 ; テンキーの1を開放するまで待つ send, {space up} ; spaceを放す } Else If ( lParam = 2 ) { ; USBテンキーAの 2 なら send, {alt down} ; Altを押し下げる ※Saiならスポイト keywait, Numpad2 ; テンキーの2を開放するまで待つ send, {alt up} ; Altを放す } Else If ( lParam = 3 ) { ; USBテンキーAの 3 なら send, {alt down}{space down} ; AltとSpaceを押し下げる ※Saiならビュー回転 keywait, Numpad3 ; テンキーの3を開放するまで待つ send, {space Up}{alt up} ; AltとSpaceを放す } } Else If ( wParam = 2 ) { ; USBテンキーBなら If ( lParam = 1 ) { ; USBテンキーBの 1 なら send, {a} ; a を押す(クリック) } Else If ( lParam = 2 ) { ; USBテンキーBの 2 なら send, {b} ; b を押す(クリック) } Else If ( lParam = 3 ) { ; USBテンキーBの 3 なら send, {c} ; c を押す(クリック) } } } このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) (8-1)に新たな条件「wParam = 1 なら (USBテンキーAなら)」と「wParam = 2 なら (USBテンキーBなら)」を追加しています。 ahk_hidmacros.ahk(スクリプト)の編集が終わったら上書き保存し、ahk_hidmacros.ahk を再実行してください。 AutoHotkeyで使うキーリスト (8-3) アプリ毎に設定(分岐)するスクリプトのサンプル その1 +←サンプルを表示する ;この最初の部分は手順(5)と同一なので省略します HidMacros(wParam, lParam) { IfWinActive, ahk_class sfl_window_class ; Saiがアクティブなら { If ( wParam = 1 ) { ; USBテンキーなら If ( lParam = 1 ) { ; テンキー1 なら send, {space down} ; spaceを押し下げる ※Saiなら手のひらツール keywait, Numpad1 ; テンキーの1を開放するまで待つ send, {space up} ; spaceを放す } Else If ( lParam = 2 ) { ; テンキー2 なら send, {alt down} ; Altを押し下げる ※Saiならスポイト keywait, Numpad2 ; テンキーの2を開放するまで待つ send, {alt up} ; Altを放す } Else If ( lParam = 3 ) { ; テンキー3 なら send, {alt down}{space down} ; AltとSpaceを押し下げる ※Saiならビュー回転 keywait, Numpad3 ; テンキーの3を開放するまで待つ send, {space Up}{alt up} ; AltとSpaceを放す } } } Else { ; Saiが非アクティブなら If ( wParam = 1 ) { ; USBテンキーなら If ( lParam = 1 ) { ; テンキー1 を a にする send, {a} } Else If ( lParam = 2 ) { ; テンキー2 を b にする send, {b} } Else If ( lParam = 3 ) { ; テンキー3 を c にする send, {c} } } } } このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) (8-2)に新たな条件「Saiがアクティブなら」を追加する。 IfWinActive, ahk_class sfl_window_class IfWinActive等で使うウィンドウタイトルやウィンドウクラスの取得は基本的に AU3_Spy.exe(Autohotkey本家に同梱されており、本家をインストール済ならAutohotkey.exeと同じフォルダにあります)を使えば簡単に取得できます。AU3_Spy.exe を実行し、調べたいウィンドウをクリック(アクティブに)するだけです。 ahk_hidmacros.ahk(スクリプト)の編集が終わったら上書き保存し、ahk_hidmacros.ahk を再実行してください。 AutoHotkeyで使うキーリスト (8-4) アプリ毎に設定(分岐)するスクリプトのサンプル その2 +←サンプルを表示する ;この最初の部分は手順(5)と同一なので省略します HidMacros(wParam, lParam) { If ( wParam = 1 ) { ; USBテンキーなら IfWinActive, ahk_class sfl_window_class ; Saiがアクティブなら { If ( lParam = 1 ) { ; テンキー1 なら send, {space down} ; spaceを押し下げる ※Saiなら手のひらツール keywait, Numpad1 ; テンキーの1を開放するまで待つ send, {space up} ; spaceを放す } Else If ( lParam = 2 ) { ; テンキー2 なら send, {alt down} ; Altを押し下げる ※Saiならスポイト keywait, Numpad2 ; テンキーの2を開放するまで待つ send, {alt up} ; Altを放す } Else If ( lParam = 3 ) { ; テンキー3 なら send, {alt down}{space down} ; AltとSpaceを押し下げる ※Saiならビュー回転 keywait, Numpad3 ; テンキーの3を開放するまで待つ send, {space Up}{alt up} ; AltとSpaceを放す } } Else { ; Saiが非アクティブなら If ( wParam = 1 ) { ; USBテンキーなら If ( lParam = 1 ) { ; テンキー1 なら send, {a} ; A をクリック(押して放す) } Else If ( lParam = 2 ) { ; テンキー2 なら send, {b} ; B をクリック(押して放す) } Else If ( lParam = 3 ) { ; テンキー3 なら send, {c} ; C をクリック(押して放す) } } } } } このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) 条件「Saiがアクティブなら」を追加しています。 IfWinActive, ahk_class sfl_window_class ahk_hidmacros.ahk(スクリプト)の編集が終わったら上書き保存し、ahk_hidmacros.ahk を再実行してください。 AutoHotkeyで使うキーリスト (8-5) キーの押しっぱなし部分を関数化し、追加や編集を簡単にするサンプル +←サンプルを表示する ;この最初の部分は手順(5)と同一なので省略します HidMacros(wParam, lParam) { If ( lParam = 1 ) { ; テンキー1 なら HoldDownKey("Numpad1", "space") ; テンキーの1を押している間は space を押したままに } Else If ( lParam = 2 ) { ; テンキー2 なら HoldDownKey("Numpad2", "alt") ; テンキーの2を押している間は Alt 押したままに } Else If ( lParam = 3 ) { ; テンキー3 なら HoldDownKey("Numpad3", "alt", "space") ; テンキーの3を押している間は Alt+Space を押したままに } } HoldDownKey(waitkey, key1, key2="", key3="", key4="") { send, {%key1% down} ; ここでのTrue(1)はキーが代入されているか否かです。代入されていなければ False(0) となります。 send, % key2 ? "{" key2 " down}" ; key2 がTrueなら仮想キー key2 を押し下げ send, % key3 ? "{" key3 " down}" ; key3 がTrueなら仮想キー key3 を押し下げ send, % key4 ? "{" key4 " down}" ; key4 がTrueなら仮想キー key4 を押し下げ keywait, %waitkey% send, % key4 ? "{" key4 " up}" ; key4 がTrueなら仮想キー key4 を放す send, % key3 ? "{" key3 " up}" ; key3 がTrueなら仮想キー key3 を放す send, % key2 ? "{" key2 " up}" ; key2 がTrueなら仮想キー key2 を放す send, {%key1% up} } このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) (8-1)のキー押しっぱなしにする部分を関数化した例です。 基本的にアプリケーションソフトのショートカットキーは4キー同時押しまで(Shit+Ctrl+Alt+A 等)なので、同時押し4キーまでを関数化した場合の例です。 HoldDownKey(実際に押しているキー, 仮想キー1, 仮想キー2, 仮想キー3, 仮想キー4) ※仮想キー2(第3引数)以降は省略可 仮想キー1,2,3,4の順序でキーを押し下げ(Down)、逆順の4,3,2,1でキーを放します(Up)。 仮想キーと書いていますが、割り当てたキーと置き換えてください。 このように関数化してしまえば3行が1行で済みますので追加や変更が簡単にできます。 ahk_hidmacros.ahk(スクリプト)の編集が終わったら上書き保存し、ahk_hidmacros.ahk を再実行してください。 AutoHotkeyで使うキーリスト ちなみに send, % key2 ? "{" key2 " down}" と If key2 send, {%key2% down} は書き方(三項演算子とIf文)が違いますが同じ動作をします。 (8-6) キーマップを切り替えるサンプル +←サンプルを表示する ;この最初の部分は手順(5)と同一なので省略します HidMacros(wParam, lParam) { global keymap ; 変数 keymap をグローバル変数にする keymap = % !keymap ? 1 keymap ; keymap が ""(空)なら keymap = 1 にする If ( lParam = 12 ) { ; USBテンキーのTabなら keymap = % keymap 2 ? 1 keymap + 1 ; 2より大きいなら1にし、それ以外は keymap+1 とする。 keywait, Tab ; USBテンキーのTabを開放するまで待つ ※keymapが一気に2つ変化しないようにする return } If ( keymap = 1 ) { ; キーマップが 1 なら If ( lParam = 1 ) { ; USBテンキー1 なら HoldDownKey("Numpad1", "space") ; USBテンキーの1を押している間は space を押したままに } Else If ( lParam = 2 ) { ; USBテンキー2 なら HoldDownKey("Numpad2", "alt") ; USBテンキーの2を押している間は Alt 押したまま } Else If ( lParam = 3 ) { ; USBテンキー3 なら HoldDownKey("Numpad3", "alt", "space") ; USBテンキーの3を押している間は Alt+Space を押したままに } } Else If ( keymap = 2 ) { ; キーマップが 2 なら If ( lParam = 1 ) { ; USBテンキー1 なら HoldDownKey("Numpad1", "ctrl") ; USBテンキーの1を押している間は Ctrl } Else If ( lParam = 2 ) { ; USBテンキー2 なら HoldDownKey("Numpad2", "ctrl", "alt") ; USBテンキーの2を押している間は Ctrl+Alt } Else If ( lParam = 3 ) { ; USBテンキー3 なら HoldDownKey("Numpad3", "ctrl", "alt", "space") ; USBテンキーの3を押している間は Ctrl+Alt+Space } } Else If ( keymap = 3 ) { ; キーマップが 3 なら If ( lParam = 1 ) { ; USBテンキー1 なら HoldDownKey("Numpad1", "alt") ; USBテンキーの1を押している間は Alt } Else If ( lParam = 2 ) { ; USBテンキー2 なら HoldDownKey("Numpad2", "space") ; USBテンキーの2を押している間は Space } Else If ( lParam = 3 ) { ; USBテンキー3 なら HoldDownKey("Numpad3", "space") ; USBテンキーの3を押している間は Space } } } HoldDownKey(waitkey, key1, key2="", key3="", key4="") { send, {%key1% down} send, % key2 ? "{" key2 " down}" ; key2 がTrueなら仮想キー key2 を押し下げ send, % key3 ? "{" key3 " down}" ; key3 がTrueなら仮想キー key3 を押し下げ send, % key4 ? "{" key4 " down}" ; key4 がTrueなら仮想キー key4 を押し下げ keywait, %waitkey% send, % key4 ? "{" key4 " up}" ; key4 がTrueなら仮想キー key4 を放す send, % key3 ? "{" key3 " up}" ; key3 がTrueなら仮想キー key3 を放す send, % key2 ? "{" key2 " up}" ; key2 がTrueなら仮想キー key2 を放す send, {%key1% up} } このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) (8-5)をベースにキーマップ切り替えを加えた例です。 USBテンキーのTabキー ( lParam = 12 ) でキーマップ(1,2,3)を切り替えるようにします。 (8-7)キーの同時押し(0キーを押しながら1キー等)に割り当てるサンプル +←サンプルを表示する #SingleInstance, Force #Persistent OnMessage(99999, "HidMacros") Menu, Tray, Add , GetScript settimer, keycheck, 50 ; キー押し下げ/開放を keycheck で 50ms 間隔で調べる tkey1 = Numpad1 tkey2 = Numpad2 tkey3 = Numpad3 tkey4 = Numpad4 tkey5 = Numpad5 tkey6 = Numpad6 tkey7 = Numpad7 tkey8 = Numpad8 tkey9 = Numpad9 tkey10 = Numpad0 tkey11 = Numpaddot tkey12 = Tab tkey13 = NumpadDiv tkey14 = NumpadMult tkey15 = Bs tkey16 = Numpadsub tkey17 = Numpadadd tkey18 = NumpadEnter ;ChangekeyでテンキーをF13~F24置き換えた場合は場合は↓のtkey1~tkey18の行頭のセミコロン(;)を削除して使う。 ;tkey1 = F13 ;tkey2 = F14 ;tkey3 = F15 ;tkey4 = F16 ;tkey5 = Numpad5 ;tkey6 = F17 ;tkey7 = F18 ;tkey8 = F19 ;tkey9 = F20 ;tkey10 = F21 ;tkey11 = F22 ;tkey12 = tab ;tkey13 = NumpadDiv ;tkey14 = NumpadMult ;tkey15 = Bs ;tkey16 = F23 ;tkey17 = F24 ;tkey18 = NumpadEnter return ; Autoexecセクション はここまで esc exitapp ; Escキーでスクリプトを終了させる。 ループから抜けられなくなったとき用。 GetScript ; スクリプトをクリップボードにコピーする DetectHiddenWindows, On SetTitleMatchMode,RegEx Hwnd = WinExist(".*\\ahk_hidmacros.ahk\s-\sAutoHotkey.* ahk_class AutoHotkey") WinGetTitle, WinTitle, ahk_id %Hwnd% Clipboard = hWnd = FindWindow ( "AutoHotkey", `"%WinTitle%`" ) Clipboard = %Clipboard%`nIf hWnd then`n Call PostMessage(hWnd, 99999, 1, 1 ) Clipboard = %Clipboard%`nEnd If msgbox, %Clipboard%`nをクリップボードにコピーしました。 DetectHiddenWindows, Off return HidMacros(wParam, lParam) { ; 第三と第四引数は必要ないので省く。 global tkey1, tkey2, tkey3, tkey4, tkey5, tkey6, tkey7, tkey8, tkey9, tkey10 global tkey11, tkey12, tkey13, tkey14, tkey15, tkey16, tkey17, tkey18 global tkey1down, tkey2down, tkey3down, tkey4down, tkey5down, tkey6down global tkey7down, tkey8down, tkey9down, tkey10down, tkey11down, tkey12down global tkey13down, tkey14down, tkey15down, tkey16down, tkey17down, tkey18down ; キーが押されたら代入する。テンキー1(tkey1)が押されたら tkey1 を tkey1down に代入する loop, 18 If ( lParam = A_Index ) { tkey%A_Index%down = tkey%A_Index% break } } keycheck IfWinActive, ahk_class sfl_window_class ; Saiがアクティブなら { If ( tkey1down ) { ; 1キーが押されているなら If !tkey10down ; 0キーが押されていなければ tkey1down = HoldDownKey2(tkey1down, "space") Else ; 0キーが押されているなら tkey1down = HoldDownKey2(tkey1down, "ctrl", "space") } If ( tkey2down ) { ; 2キーが押されているなら If !tkey10down ; 0キーが押されていなければ tkey2down = HoldDownKey2(tkey2down, "alt") Else ; 0キーが押されているなら tkey2down = HoldDownKey2(tkey2down, "ctrl", "alt", "space") } If ( tkey3down ) { ; 3キーが押されているなら If !tkey10down ; 0キーが押されていなければ tkey3down = HoldDownKey2(tkey3down, "ctrl") Else ; 0キーが押されているなら tkey3down = HoldDownKey2(tkey3down, "ctrl", "alt") } If ( tkey4down ) ; 4キーが押されているなら tkey4down = HoldDownKey2(tkey4down, "shift") If ( tkey5down ) ; 5キーが押されているなら tkey5down = HoldDownKey2(tkey5down, "alt", "space") If ( tkey10down ) ; 0キー ※コンビネーションキーの起点とする。 tkey10down = HoldDownKey2(tkey10down, "") ; 割り当てていないキーを通常のテンキーにする。 If ( tkey6down || tkey7down || tkey8down || tkey9down || tkey11down || tkey12down || tkey13down || tkey14down || tkey15down || tkey16down || tkey17down || tkey18down ) gosub, TenkeyMode } Else { ; Sai以外なら通常のテンキーにする。 gosub, TenkeyMode } return HoldDownKey2(tkeydown, vkey1="", vkey2="", vkey3="", vkey4="") { keywait, %tkeydown%, T0.01 if ( vkey1 ) { If !errorlevel { send, {%vkey1% up} send, % vkey2 ? "{" vkey2 " up}" send, % vkey3 ? "{" vkey3 " up}" send, % vkey4 ? "{" vkey4 " up}" return 0 } If ( !getkeystate(vkey) ) { send, {%vkey1% down} send, % vkey2 ? "{" vkey2 " down}" send, % vkey3 ? "{" vkey3 " down}" send, % vkey4 ? "{" vkey4 " down}" } return %tkeydown% } Else { return % errorlevel ? tkeydown 0 ; キーが開放されたら 0 を返す } } TenkeyMode ; 通常のテンキーにする tenkeys = %tkey1%|%tkey2%|%tkey3%|%tkey4%|%tkey5%|%tkey6%|%tkey7%|%tkey8%|%tkey9%|%tkey10% tenkeys = %tenkeys%|%tkey11%|%tkey12%|%tkey13%|%tkey14%|%tkey15%|%tkey16%|%tkey17%|%tkey18% Loop, Parse, tenkeys, | { If tkey%A_Index%down { send, {%A_LoopField%} tkey%A_Index%down = 0 } } return このサンプルをDownloadする (ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。) SAIではAltキーを割り当てたキーから押すと反応しません。例えば、0キーにAlt、1キーにSpaceを割り当てた場合、0を押しながら1を押してもAltしか押されていないと判定(Saiの右下ではAlt+anyと表示)されますが、先に1キーを押しながら0キーを押すとビュー回転(Alt+Space)と判定されます。SAIでAltキーを割り当てる場合は注意してください。 私はAHK_L版(現在の主流)ではなく、ノーマル版を使っているのでこのようなスクリプトになっていますが、AHK_L版を使ったほうがもっとスマートに書けると思います(L版の #IF や 配列変数 を使うともっと簡単だと思います)。 注意点:下記の部分は同じ変数にしてください。 ↓これ If ( tkey4down ) ; 4キーが押されているなら tkey4down = HoldDownKey2(tkey4down, "shift") ↑これ ↑これ 例えば、下記の箇所が違うと5キーに割り当てたキーが押されっぱなしになる可能性が高いです。※スクリプトによって異なります。 If ( tkey4down ) ; 4キーが押されているなら tkey5down = HoldDownKey2(tkey4down, "shift") ↑ここだけ違う 例えば、下記の箇所が違うとShiftキーが押しっぱなしになる可能性が高いです。※スクリプトによって異なります。 If ( tkey4down ) ; 4キーが押されているなら tkey4down = HoldDownKey2(tkey5down, "shift") ↑ここだけ違う (9-1) USBテンキーのEnterキーが NumpadEnter or Enter のどちらなのかを調べる テンキーのEnterについてですが、USBテンキーによっては NumpadEnter ではなく Enter の信号を送ってくるタイプがあります。どちらを送っているか調べるにはEnterKeyCheck.ahkをダウンロードし、実行してからUSBテンキーのEnterキーを押して調べてください。調べる際はHID Macrosを終了してから行なってください。HID Macrosを終了してから行わないとキー情報を取得出来ない場合があるからです。Autohotkey_L Unicode版で利用する場合はスクリプトファイルのファイルエンコーディングについてを参照してください。 更新履歴など 2012-03-22Autohotkey_L Unicode版で利用する場合に UTF-8 形式で保存する補足説明を追加 2012-02-19(2) USBテンキー(USBデバイス)を接続するに補足説明を追加 手順(8-x)の各サンプルスクリプト(アップロードファイル)の名称を ahk_hidmacros.ahk に統一 2012-01-21簡易掲示板を設置 2012-01-04(8-7)キーの同時押し(0キーを押しながら1キー等)に割り当てるサンプルを追加しました。 (8-7)のスクリプトサンプルを修正 画像やファイルへのリンクの修正 2012-01-03テンキーをF13~F24にするにてChangeKeyの設定方法が間違っていたので修正しました。 Windows XP SP3 Home Edition と Windows 7 Professional SP1 で動作を確認しました。 (8-2) USBデバイスごとに設定(分岐)するスクリプトのサンプルを修正 2011-12-15 (2011-12-12を一部修正)SAIがAutohotkeyよりもLowレベル(OSに近い部分)でキーを認識する問題ですが、私の実力ではAutoHotkeyだけでの回避は無理です。SAIはShift+Numpad系(テンキー)にビュー系のショートカットが割り当てられているため、テンキーにShiftの長押し(押しっぱなし)を割り当てるとビュー系ショートカットとして認識されてしまいます。回避策としては長押し(押しっぱなし)にShiftを割り当てないようにするか、面倒ですがChangeKeyを使い、テンキー(Numpad0~4、Numad6~9、NumpadAdd = +、NumpadSub = -)をF13~F24へ変更し、AutoHotkeyでF13~F24に対して割り当てを行えば誤動作しなくなります。(Numpad5、NumpadMult = *、NumpadDiv = / はSAI内部でショートカットが割り当てられていないので変更せずにそのまま利用してOK)F13~F24へ変更する方法はテンキーをF13~F24にするを参考にしてください。SAI(及び、割り当てを変更するアプリケーションソフト)以外はAutoHotkeyのRemapでF13~F24をテンキーにする(戻す)、もしくはここのスクリプトでF13~F24にテンキーを割り当てれば通常使いには問題が無いはずです。 SAI以外(PhotoShopやIllustrator等)では正常に動作しますので上記の処置を施す必要はありません。 2011-12-11手順(8-x)のサンプルの "}" が足らずにエラーとなっていたので修正しました。 (8-5) キーの押しっぱなし部分を関数化し、追加や編集を簡単にするサンプルを追加しました。 (8-6) キーマップを切り替えるサンプルを追加しました。 押しっぱなしをやろうとするとUSBテンキーで押しているキーが連打されてしまうので解決方法を探さないとダメかも。※OSはWinXP SP3SaiはAutohotkeyよりもLowレベル(OSに近い部分)でキーを認識してしまうため、サンプルの方法だと上記が発生するっぽい。
https://w.atwiki.jp/tdl_nemu/pages/2.html
☆レストラン一覧☆ テーマポート別 メディテレーニアンハーバー アメリカンウォーターフロント ポートディスカバリー ロストリバーデルタ アラビアンコースト マーメイドラグーン ミステリアスアイランド サービスタイプ別 テーブルサービス カウンターサービス バフェテリアサービス ブッフェサービス ワゴンサービス あったかドリンク情報 ポップコーン情報 スーベニア情報 お子様メニュー 低アレルゲンメニュー 各種解説 休止情報 掲示板はこちら 合計: - 今日: - 昨日: - 管理人:chibita★since 18.5.2009店舗情報 / 更新履歴<ここを編集する> 更新履歴 取得中です。
https://w.atwiki.jp/tdl_menu/pages/2.html
☆レストラン一覧☆ テーマランド別 ワールドバザール アドベンチャーランド ウエスタンランド クリッターカントリー ファンタジーランド トゥーンタウン トゥモローランド サービスタイプ別 テーブルサービス カウンターサービス バフェテリアサービス ブッフェサービス ワゴンサービス あったかドリンク情報 ポップコーン情報 スーベニア情報 お子様メニュー 低アレルゲンメニュー 各種解説 休止情報 掲示板はこちら 合計: - 今日: - 昨日: - 管理人:chibita★since 2.2.2009店舗情報 / 更新履歴<ここを編集する> 更新履歴 取得中です。
https://w.atwiki.jp/mousegestures/pages/54.html
●About ●よく聞かれる質問 ○スクリプトの知識が無いし,他のプログラムに触れたこともないのに使えるでしょうか? ○Windows7 64bitでは動作しますか。 ○MouseGesture.ahkとMouseGestureL.ahkの違いがよく解らない。 ○自作のスクリプトを発表したい。 ●問題編 ○導入したが何も起こらない ○MouseGesture.ahkを押してもトレイアイコンが現れない。 ○タスクトレイに緑地に白抜きでHのアイコンは出たが設定を色々登録しても反応しない。。 ○設定画面で編集しokボタンを押したら英文のエラーメッセージが出て動作しなくなりました。 ○マウスのコントロールが効かず矢印が出たまま動かない。マウスを動かすと矢印が増えてくる。 ○何も押していないのにマウスを動かすと画面の縁で矢印が増える。 ○「MB_」と「MB__」の違いが分かりません。 ○縁認識の反応を確認したい。 ○メモ帳では動作するが他のアプリでは動作しない。 ○サイドボタンでブラウザの進む 戻るが発動してしまう。 ○8方向モードがうまく使いこなせない。 ○ホイールリダイレクトをやりたい。 ○「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による ○指定したウィンドウが存在しなかったので処理が止まってしまった ○Excelで2画面表示の時の条件分けの設定例 ○画面のサイズ変更は ○全画面最小化,元に戻す ↑Top About よく聞かれる質問 スクリプトの知識が無いし,他のプログラムに触れたこともないのに使えるでしょうか? MouseGestureL.ahk はマウスジェスチャを初めて使う人でも便利に 使えるソフトをコンセプトに改良が進められています。 マウスジェスチャーで色々やりたいことがあるという目的意識があれば使えます。 導入後にスクリプトを覚えるとさらに便利に使えるようになります。 ;;;;;↓↓スクリプトがいる理由,暇だったら読んで↓↓;;;;;;; マウ筋を使ったことがあって導入手順の通りにすれば設定画面を 出すまでは割と簡単にできます。 設定画面から設定保存を行うことにより 自動的にAutoHotkeyが認識できるスクリプトを生成してくれます。 設定画面から操作する範囲においてはマウ筋とそれほど変わらない感覚で 使うことが出来ます。 その意味ではスクリプトを知らないでも使い続けることは可能です。 ただ,この状態では,マウ筋の方が使いやすく感じると思います。 マウ筋と違い1か所でも文法上の矛盾があれば動きませんし,定義の通りに 動くソフトなので,逆に言えば考え落ちの所があれば ぎこちない動きになってしまいます。 この段階でとどまっているのであれば導入時の労力なども考えあわせて マウ筋等今まで使っていたソフトを使い続けた方が良いでしょう。 それらの方が,手軽に設定を登録出来ますし,使い勝手が良いように ソフト側の設定がなされています。 今まで使っていたソフトで出来ることで満足なら,移行はお勧めしません。 この辺の問題を解消するため改良が進められています。 MouseGesture.ahkの作者はある程度スクリプトの知識をもったユーザー を前提にこのソフトを開発されたようですし, スクリプトはこのソフトの高度な使い方まで使いこなすには必要です。 AutoHotkey (略称 AHK)は Windows 用フリーウェアのスクリプト言語で、 プログラミング経験の少ない人を対象に作られ、シンプルで無駄のないコードが特徴です。 ぼちぼち 解説頁のAutoHotkeyJp等を眺めたり,ネット上に挙げられている 例を参考にスクリプトを始め理解を深めて行くうちにMouseGesture.ahkの便利さが 少しずつ解ってきます。 スクリプトの編集はメモ帳でも出来ますが, Notepad++などのコードエディタを 利用した方が作業が捗ります。 ;;;;;↑↑スクリプトがいる理由,暇だったら読んで↑↑;;;;;;; MouseGesture.ahk概要 http //www53.atwiki.jp/mousegestures/pages/26.html#id_b6143050 ゆっくりMouseGesture.ahk(English版)でマウスジェスチャー http //www.nicovideo.jp/watch/sm16761280 AutoHotkey とは http //sites.google.com/site/ahktips/home AutoHotkeyJp http //sites.google.com/site/autohotkeyjp/ AutoHotkey Wiki http //ahkwiki.net AutoHotKey http //vipprog.net/wiki/AutoHotKey.html#h82df47d 英語版紹介記事 AutoHotkey Community http //www.autohotkey.com/forum/viewtopic.php?p=516736#516736/ ↑Top Windows7 64bitでは動作しますか。 MouseGesture.ahkの作者による更新は2008/10/07が最終です。 今後作者による更新の予定はありません。 従って正式なWindows7 64bit対応版は存在しません。 有志の方が修正された,64bit環境対応版が公開されています。 MouseGestureL.ahk http //code.google.com/p/mousegesturel/downloads/list| 32bit,64bitで MouseGestureL.ahkは共通に使えます。 WindowsVista Windows7での制限 UACの一般権限では、管理者権限のアプリを操作できません。 逆にAutoHotkeyを管理者権限で実行した場合、 MG_CommandLine()で一般プロセスのコマンドライン を取得できないなどの制限があります。 ↑Top MouseGesture.ahkとMouseGestureL.ahkの違いがよく解らない。 MouseGestureL.ahkはMouseGesture.ahkの開発終了を惜しむ有志によって, 派生版として,発表されました。 オリジナルのMouseGesture.ahkの優れた点として、 ジェスチャーへの割り当て動作にスクリプトを記述できるため、自由度の高い動作設定が可能 ボタンを押したままジェスチャーを繰り返すことで連続的に割り当て動作を実行させるなど、特殊な動作設定が可能 といったことが挙げられます。 派生バージョンは上記の特徴をそのまま受け継ぎ、さらに以下のような変更が加えられています。 ●Unicode環境、および64-bit版Windows環境への対応 ●ジェスチャー軌跡表示機能の実装 ●リアルナビの実装 ●アドバンスドナビの実装 ●プラグイン機能の実装 ●設定画面のユーザーインタフェースの改善 ●多言語対応 これらは派生版開発者のホームページに詳しく解説してあります。 設定画面のユーザーインタフェースの改善は初心者に配慮して行われています。 また,操作によるエラーが起こりにくく,エラーからの回復も容易になりました。 具体的には ・MG_Config.ahkが存在しないとエラーになっていたのを, 存在しない場合でも起動するよう修正されています。 ・初回起動時にサンプルジェスチャーの登録を選択できるよう変更されています。 ・設定画面の左側リスト表示にSボタンが追加され,名前昇順の並び替え が出来るようになりました。 ・同一内容の条件定義の重複登録、および同一条件を対象とした動作割り当 ての重複登録ができないよう修正されています。 ・クリップボードから条件定義、ジェスチャー定義をインポートする際、既 存設定と重複する定義は無視するよう修正されています。 ・ジェスチャー定義,動作定義画面で空の定義を複数登録したとき(操作++OK) 無視されるよう修正されています。 ・条件定義で選択無しの時「-」が無効となるよう修正されました。 ・縁認識モジュールの追加削除が表示リストから出来るようになりました。 ・エラーメッセージの時,日本語のガイダンスが出るよう修正されています。 エラーの内容をコピーするボタンが追加されています。 ・マウスボタンの押しっぱなし現象について、定期的に監視して 自動リリースする処理が追加されました。 ・動作定義のスクリプト編集をエディタで行えるようEボタンが追加されました。 ※MouseGesture改良プロジェクトは終了しました。 MouseGestureL.ahkの更新自体は今後も継続される予定です。 ↑Top 自作のスクリプトを発表したい スクリプトの発表の場はAutoHotkey Community Forum等があります。 手軽にupしたいという時は有志の方が設置された Autohotkey専用うpろだ を利用することも出来ます。 Autohotkey専用うpろだ http //ux.getuploader.com/autohotkeyl/ GoogleCode の mousegesturel の Downloads に Upするためには Project Home の 頁の左側にある Members の所に登録する必要があります。 GoogleCodeにUpしたいという内容のメールをHelp の編集者宛に送って下さい。 ( パスワード等は必要ありません。絶対に書き込まないでください。) 編集者へのメールは Gmailで送ってください。 ↑Top 問題編 導入したが何も起こらない。 起動はC \~省略~\MouseGesture2L\MouseGesture.ahkを実行することで タスクトレイに緑地に白抜きでHのアイコンが出たら成功です。 MouseGesture.ahkのショートカットをスタートアップに登録しておけば 自動的に起動されます。 ↑Top MouseGesture.ahkを押してもトレイアイコンが現れない。 あらかじめ本体のAutoHotkey_L をインストールしておく必要があります。 導入手順は 銀盤浴さんの頁 http //ginbanyoku.blog67.fc2.com/blog-entry-129.html| 上下猿さんの頁 http //blog.livedoor.jp/irvcidre/archives/1616301.html| なお, MouseGesture.ahkは下記から入手してください。 MouseGestureL.ahk http //code.google.com/p/mousegesturel/downloads/list ↑Top タスクトレイに緑地に白抜きでHのアイコンは出たが設定を色々登録しても反応しない。 Autohotkeyが押されたボタンをユーザーの思い通りに判別出来ていない状態が想定されます。 原因としてはマウスユーティリティソフトでボタンに特殊な割り当てを行っていたりすると Autohotkeyは反応しません。本サイトのその他 ポインティングデバイス http //www53.atwiki.jp/mousegestures/pages/35.html| を参照して下さい。 Autohotkeyの実行の仕組みについては下記url等に解説してあります。 Vista/Windows 7におけるキーボードカスタマイズ問題 - A Successful Failure http //d.hatena.ne.jp/LM-7/20090614/1244980470| リマップ http //sites.google.com/site/autohotkeyjp/reference/remap| スクリプトの実行のされ方 - hoge http //sites.google.com/site/agkh6mze/howto/scripting| ↑Top 設定画面で編集しokボタンを押したら英文のエラーメッセージが出て動作しなくなりました。 設定変更をMouseGesture.iniとConfig.ahkに変換する時点で 文法上の誤りが見つかりエラーになった状態です。 英文を読むと原因が示されていることが判ります。 Config.ahkの行番号を指示してメッセージが出ることがありますが あわててConfig.ahkを修正したりしても直りません。(経験者談) Config.ahkで動作のロジックを見ることが出来ます。 ただ,Config.ahkの編集は解決を遅らせるだけです。 修正は「設定画面での編集」か「iniの直接編集 再起動(R)」で行います。 (再起動(R)とAutoHotkeyの標準コマンド内にあるReload this Scriptとは 動作が異なります。参照:Help.chmの5.2.8. 再起動) どうしてもエラーが消えなかったら,以前の状態に戻すのが近道です。 修正を加える前のMouseGestureフォルダをバックアップで とっておきましょう。 世代管理できるフリーソフト(BunBackup等)を使えば 段階ごとの記録を残せますし,最初からやり直すより 被害は少ないです。 リストアはAutoHotkeyとMouseGestureL.ahkをいったん終了し, MouseGestureフォルダにバックアップファイルを 丸ごと上書きすれば完了です。 設定ファイル(MouseGesture.ini)だけを上書きして復元する時は, 上書き直後にトレイメニューの再起動を実行してください。 iniファイルの保存・復元が手軽にできるよう Pluginを作りました。 Backup*.Zip http //code.google.com/p/mousegesturel/downloads/list| ↑Top マウスのコントロールが効かず矢印が出たまま動かない。マウスを動かすと矢印が増えてくる。 直前のジェスチャジの認識が解除されていないことが考えられます。 例えば直前の動作で Send,^a であればマウスボタンが押しっぱなしと認識されているいる状態のとき矢印が次々出てきます。 この場合,末尾にMG_Abort()を加えると,概ね解決できます。 例の場合は Send,^a Sleep,100 MG_Abort() としてください。 ↑Top 何も押していないのにマウスを動かすと画面の縁で矢印が増える。 マウスを動かすと画面の縁で矢印が増える状態は画面縁認識を追加したときにおこります。 ジェスチャ定義のIgnoreに CLB_WU_ CLB_WD_ CLB_2 CLT_WU_ CLT_WD_ CLT_2 CRB_2 CRT_2 EB2_2 EL2_2 ER2_2 ET2_2 ER1_2 CLB_4 CLT_4 CRB_4 CRT_4 EB2_4 EL2_4 ER2_4 ET2_4 ER1_4 以下略 などと定義しましょう。 ↑Top 「MB_」と「MB__」の違いが分かりません。 「MB_」はボタンを押したとき 「MB__」はボタンを離したときを表しています。 ダブルクリックは「MB__MB__」で表現します。 認識のタイミングは マウ筋視点でのダブルジェスチャについて http //www53.atwiki.jp/mousegestures/pages/48.html#id_f3131501| に解説があります。 式による使い分けは,下記のようになります。 X1B__ if(MG_Executed=1){ ;単独で押された時に実行される動作 } X1B_ if(!MG_Timer(500)){ ;指定時間経過後に実行される動作 } if(MG_Hold() 500){ ;長押しクリック時の動作を記述 } if(MG_Hold() MG_Hold() 500){ ;短クリック時の動作を記述 } if(MG_Hold()){ if(MG_Hold() 500){ ;長押し時の動作 }else{ ;短クリック時の動作 } } if(!MG_Hold()){ ;押したときの動作 }else{ ;放したときの動作 } if(MG_While(100)){ ;ボタンを押したとき繰り返される動作 ;(ボタンを放した後にも一度だけ同じ動作が実行される。) } if(!MG_WhileState){ ;押し下げ時の動作 MG_While(100) }else if(MG_While()){ ;押し下げている間の動作 }else{ ;放したときの動作 } X1B__ と X1B_ どちらでも使用できる式 if(MG_Counter()){ ;奇数回目の実行時の動作 }else{ ;偶数回目の実行時の動作 } if(1=MG_Counter("",3)){ ;3の倍数+1回目の呼び出し }else if(2=MG_Counter("",-3)){ ;3の倍数+2回目の呼び出し }else{ ;3の倍数回目の呼び出し } if(MG_Defer()){ ;全てのボタンが放されたときに発動する動作 } if(!MG_Timer(-500)){ ;クリックが1回のみだった場合の動作 } ↑Top 縁認識の反応を確認したい。 前の項で縁認識の角は広げることが出来ます。 使っていると,縁認識は反応を確認しづらいことがあります。 動作の中にSoundplay,を入れると音による確認が出来ます。 Guiを利用して,可視化するようにも出来ます。 準備として,SE_CLB.bmpのような画像を幾つか用意し,フォルダに保存しておきます。 画面左下隅に接触の時の動作設定例です。 trans=150 ;;bmpの透明度 0~255 0で不可視 image=%A_ScriptDir%\Components\ImageFiles\SE_CLB.bmp Gui,+Owner +AlwaysOnTop -Resize -SysMenu -MinimizeBox -MaximizeBox -Disabled -Caption -Border -ToolWindow Gui,Margin,0,0 Gui,Add,Picture,,%image% Gui,Show,X-0 Y-950 W100 H100 NoActivate,Corner WinSet,TransColor,000000 %trans%,Corner ;;画像の中の黒色を透明に WinMove,Corner ,,0,950 Sleep,50 ;-------------------------------------- ;;動作をここに記述してください。 ;-------------------------------------- Sleep,100 Gui,Destroy このスクリプトを書き換えて,タスクバーの一部など, 特定の位置にGuiを表示させることも出来ます。 出典 skrommel Posted Sun Dec 11, 2005 12 27 am Post subject On MouseDown http //www.autohotkey.com/forum/topic6833.html highlight=mousegesture 画像表示を関数化して利用する方法を The examples of setting に載せています。 http //code.google.com/p/mousegesturel/downloads/list ↑Top メモ帳では動作するが他のアプリでは動作しない。 動作割り当ての条件がEditorになっていませんか, すべてのアプリで動作させたいときは 条件をDefaultで定義します。 ↑Top サイドボタンでブラウザの進む 戻るが発動してしまう。 IE,FireFox,Operaなどでは,サイドボタン短クリックでブラウザの戻る,進む はそのままで使ってください。 またはX1B_ , X1B__ , X2B_ , X2B__ に空白を割り当てれば 戻る,進む は無効になります。 X1B__ に動作を割り当てることも出来ますが,Msgbox,を定義した場合 戻る が実行されます。 Chrome,Safariなどでは以下の設定で別の機能を割り当てることが出来ます。 ブラウザとDefault で動作を分けてください。 この場合Defaultはブラウザ以外と認識されます。 X1B(左サイドボタン)を例にとると X1B__ Browser=;空白 Default=if(MG_Executed=1){ ;単体で押したときの動作 } X1B_ Browser=if(MG_Hold() MG_Hold() 500){ ;短クリック時の動作を記述 } Default=;空白 または Defaultにreadmeの[Gesture_Start]を登録します。 Default=WinActivate ControlFocus,,ahk_id %MG_HCTL% サイドボタンでのブラウザの 戻る,進む (既定動作)を無効にする別の方法 サイドボタンに別の機能を割り当てておけば 戻る,進む は無効になります。 ここでは、F13,F14というキーボードには無いキーを割り当てる方法を 紹介します。 出典 AutoHotkey Wiki http //ahkwiki.net/-InputLevel 【1】;マイドキュメントにあるAutohotkey.ahkに下記の4行を追加します。 ;Autohotkey.ahkがない場合は新規作成してください。 ;MouseGestureL.ahkとAutohotkey.ahk 2つのスクリプトを起動してください。 Menu, Tray, Icon, %A_WinDir%\System32\shell32.dll, 15 ;この行はお好みで #InputLevel 1 XButton1 F13 XButton2 F14 【2】MouseGestureL.ahk の新規ボタン作成で 「キー」S1B 「名前」F13 「キー」S2B 「名前」F14 を作成します。 【3】MouseGestureL.ahk のジェスチャ定義で X1B→S1B X2B→S2B に書き換えるか,又はMouseGestureL.iniの直接編集で置換します。 【4】この設定を行えば別章のX1B_,X1B__は下記のようになります。 S1B__に定義を割り当ててください。 また,条件もDefault 1つで済み,S1B__S1B__を割り当てることも可能です。 S1B__S1B__等のダブルジェスチャーを定義したいときは,このような記述例があります [S1B__] G=S1B__ Default= if((MG_Executed=1) (!MG_Timer(-300))){【TAB】if (A_TimeSincePriorHotkey 600 ) {【TAB】 ;Click the short-time behavior【TAB】 }else{【TAB】 ;Describes the behavior of the click when press and hold【TAB】 }【TAB】 } [S1B__S1B__] G=S1B__S1B__ Default= ;;Operation at the time of a double click ↑Top 8方向モードがうまく使いこなせない。 4方向に操作を整理しましょう。 wikiのアンケートの結果では,4方向モードが多数派です。4方向で済ませれば類似ジェスチャーの考慮もあまり必要有りません。Firefox,Chrome,Operaなどブラウザにあるマウスジェスチャー機能でもデフォルトは縦横方向です。4方向でも1ストローク4通り,2ストローク4x3=12通り,3ストローク4x3x3=36通りの設定が可能です。 どうしても8方向が使いたいなら・・・ 8方向モードにおいては,類似ジェスチャーの考慮が必要です。「↑→↓」「↑↓」のような似たジェスチャを一つの定義にまとめて、どれが入力されても意図した動作が実行されるようにすれば,認識精度が上がります。 8方向はそのままでは類似のジェスチャーの種類が多くなるので, 斜め移動の認識範囲にある「縦横の後」を0に、「斜めの後」を90にして類似を絞ったときの設定例です。 この設定例では, F,G,K,Qはジェスチャー設定が困難な為省略しています。 【C,O】 【H,Y】 【H,R】【P,D】 【U,V】 【X,Y】は同じジェスチャーになってしまいます。 アルファベットの中で他と重複しないのは A,B,E,I,J,L,M,N,S,T,W,Zでした。 全ての可能性をカバーしきれてはいません。全部をカバーしようとすると 他の文字と重複するケースばかりになってしまうので,ごくまれな例は省いています。 Aをイメージしたジェスチャー [A_Stroke] G=RB_9373_ G=RB_937_ Bをイメージしたジェスチャー [B_Stroke] G=RB_286464_ G=RB_28624624_ G=RB_2864624_ G=RB_2862464_ G=RB_286248624_ G=RB_28648624_ G=RB_28624864_ Cをイメージしたジェスチャー [C_Stroke] ○(反時計回り)を割り当て Dをイメージしたジェスチャー [D_Stroke] G=RB_28624_ G=RB_2864_ ;G=RB_2864_ はPと共通. Eをイメージしたジェスチャー [E_Stroke] G=RB_4646_ G=RB_426426_ G=RB_1313_ G=RB_46426_ G=RB_42646_ G=RB_139713_ G=RB_13713_ G=RB_13913_ G=RB_4268426_ G=RB_468426_ G=RB_426846_ Fをイメージしたジェスチャー [F_Stroke] 省略 Gをイメージしたジェスチャー [G_Stroke] 省略 H(h)をイメージしたジェスチャー [H_Stroke] G=RB_2862_ ;G=RB_2862_ はR(r)と共通 G=RB_282_ ;G=RB_282_ は Yと共通. I(i)をイメージしたジェスチャー [I_Stroke] G=RB_93_ G=RB_82_ G=RB_6826_ G=RB_826_ G=RB_682_ Jをイメージしたジェスチャー [J_Stroke] G=RB_248_ G=RB_24_ G=RB_17_ Kをイメージしたジェスチャー [K_Stroke] 省略 Lをイメージしたジェスチャー [L_Stroke] G=RB_26_ Mをイメージしたジェスチャー [M_Stroke] G=RB_8282_ G=RB_862862_ G=RB_82862_ G=RB_86282_ G=RB_9393_ G=RB_931793_ G=RB_93793_ G=RB_93193_ G=RB_8624862_ G=RB_824862_ G=RB_862482_ Nをイメージしたジェスチャー [N_Stroke] G=RB_939_ G=RB_828_ G=RB_868_ G=RB_86268_ G=RB_8268_ G=RB_8628_ Oをイメージしたジェスチャー [O_Stroke] ○(反時計回り)を割り当て Pをイメージしたジェスチャー [P_Stroke] G=RB_2864_ ;G=RB_2864_ はDと共通. G=RB_28624_ ;G=RB_8624_ は○と同じジェスチャーになるので省略しました。 Qをイメージしたジェスチャー [Q_Stroke] 省略 R(r)をイメージしたジェスチャー [R_Stroke] G=RB_286_ G=RB_2862_ ;G=RB_2862_ はH(h)と共通 Sをイメージしたジェスチャー [S_Stroke] G=RB_464_ G=RB_131_ G=RB_42624_ G=RB_4624_ G=RB_4264_ Tをイメージしたジェスチャー [T_Stroke] G=RB_642_ G=RB_62_ Uをイメージしたジェスチャー [U_Stroke] G=RB_268_ G=RB_39_ Vをイメージしたジェスチャー [V_Stroke] G=RB_268_ G=RB_39_ ※Uと同じジェスチャになります。 Wをイメージしたジェスチャー [W_Stroke] G=RB_2828_ G=RB_268268_ G=RB_3939_ G=RB_28268_ G=RB_26828_ G=RB_397139_ G=RB_39139_ G=RB_39739_ G=RB_2684268_ G=RB_284268_ G=RB_268428_ Xをイメージしたジェスチャー [X_Stroke] G=RB_391_ G=RB_2684_ ;G=RB_2684_ は○と共通 Yをイメージしたジェスチャー [Y_Stroke] G=RB_391_ ; G=RB_391_ は Xと共通. G=RB_2682_ G=RB_282_ ; G=RB_282_ は Hと共通. Zをイメージしたジェスチャー [Z_Stroke] G=RB_646_ G=RB_313_ G=RB_62426_ G=RB_6246_ G=RB_6426_ ○(時計回り)をイメージしたジェスチャー G=RB_8624 などの 4ストロークだけ設定して。 動作の先頭にMG_Abort()をつけることでも,正しく認識されます。 ただし,この場合,コンテキストメニューが表示されてしまいます。 [○_Stroke] G=RB_8624_ G=RB_4862_ G=RB_2486_ G=RB_6248_ G=RB_9317_ G=RB_7931_ G=RB_1793_ G=RB_3179_ G=RB_86248_ G=RB_48624_ G=RB_24862_ G=RB_62486_ G=RB_93179_ G=RB_79317_ G=RB_17931_ G=RB_31793_ ○(反時計回り)をイメージしたジェスチャー [○_Stroke] G=RB_4268_ G=RB_2684_ G=RB_6842_ G=RB_8426_ G=RB_7139_ G=RB_1397_ G=RB_3971_ G=RB_9713_ G=RB_84268_ G=RB_42684_ G=RB_26842_ G=RB_68426_ G=RB_97139_ G=RB_71397_ G=RB_13971_ G=RB_39713_ ↑Top ホイールリダイレクトをやりたい。 ホイールリダイレクトとは マウスホイールの回転をアクティブウィンドウではなくカーソル下のコントロールに送る。 という操作です。 ヘルプの4.3.3.ホイールでカーソル下のコントロールを操作や WheelRedirect.ahk http //lukewarm.s101.xrea.com/myscripts/index.html| WheelAccel.ahk http //mobitan.org/ahk/ | 等を使って,AutoHotkeyから実現できます。 他のフリーソフトを共存させて,行う方法もあります。 2012年リダイレクトに関するアンケート http //www53.atwiki.jp/mousegestures/pages/36.html#id_756552f3| V1.16でホイールリダイレクト機能が改良され,MGL一本化が可能になりました。 コマンドは 「縦スクロール」MG_SendWheel(dir, counts=1) ,(MG_Scroll2("V") 「横スクロール」(MG_Scroll2("H") などを使います。 設定方法はヘルプの 3.7.動作割り当て 3.14.設定例 4.4.2.ユーティリティ変数・関数 等を参照してください。 ↑Top {「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による) 自分自身のキーを送って無限ループになっていませんか。 例) 「a Send, a 」 先頭に $ を付ければ回避できます(NT系のみ)。 例) 「$a Send, a」 または,高速ホイールを使っている場合このエラーが出る事があります。 WU_ ,WD_ はホイール回転1ノッチと認識されます。 高速ホイールの場合大きな数のノッチが送られこのエラーが表示されます。 下記のような設定を「拡張スクリプト」の「初期化処理」の中に記述することで 回避出来ます。 例1) 指定時間の間に実行できる最大のホットキー数を設定 #HotkeyInterval 2000 ;;時間の長さをミリ秒で指定 #MaxHotkeysPerInterval 3000 ;;ホットキーの実行数の上限を指定 ;;2秒間に3000回 例2) #HotkeyInterval 10000 #MaxHotkeysPerInterval 700 ;;10秒間に700回 出典 AutoHotkeyスレッド Part13 549~555 http //logsoku.com/thread/anago.2ch.net/software/1317156599/501-600 ↑Top 指定したウィンドウが存在しなかったので処理が止まってしまった 指定したウィンドウが存在しない場合,処理が止まってしまいます。 AutoHotkeyのWinWaitコマンドを使うことで存在しない場合処理を終わらせることが出来ます。 Run, notepad.exe WinWait, Untitled - Notepad, , 2 if ErrorLevel 0 { MsgBox, WinWait timed out. return } else WinMinimize ; minimize the window found by WinWait. 出典 AutoHotkeyJp Winwait http //sites.google.com/site/autohotkeyjp/reference/commands/WinWait ↑Top Excelで2画面表示の時の条件分けの設定例 ahkでファイル名でExcelのスクロール制御などを設定する場合 1画面の時はInStr(MG_Title,"検索文字列")で出来るが, 2画面以上の時,( Now Under Mouse Cursor )のTextを取得 して判別させる必要がある。 この場合条件定義ではなく動作割り当てのところに組み込む形で条件分岐を行う。 MouseGetPos,,,,OutputVarControl ControlGetText, OutputVar ,%OutputVarControl% if (InStr(OutputVar,"検索文字列")){ ;検索文字列と一致したときの動作 }else{ ;その他の時の動作 } ↑Top 画面のサイズ変更は (10スレ目304の続き) 10スレ目304 http //desktop2ch.net/software/1323263124/?p=304 ●画面のサイズ変更 ●画面のサイズ変更を一部可視化させる ●カーソルを一時的に消す ○画面のサイズ変更の操作画面 画面のサイズ変更 画面のサイズ変更は WinGet, State, MinMax, A ;最大化の時もこの3行は必要だよ if State != 0 ; WinRestore, A ; WinMove,A , , 50,50 ,700,500 本wikiのWindows操作編が基本です。 Windows操作編 http //www53.atwiki.jp/mousegestures/pages/23.html#id_3e6dd2a1| そちらを押さえた所でちょっと小細工をしてみました。 ↑この章先頭へ 画面のサイズ変更を一部可視化させる 画面のサイズ変更を一部可視化させるには タイトルバーのドラッグを併用した次のような方法があります。 ;;画面左半分に移動 Sleep,100 Run,%A_ScriptDir%\Components\nomousy.exe /hide ;;nomousy.exe 必要 Sleep,100 CoordMode,Mouse , Screen MouseGetPos,,,OVW WinGetClass, OutputVar , ahk_id %OVW% ;MsgBox, デスクトップ,タスクバー, SideBar, 何もしない if OutputVar in Progman,Shell_TrayWnd,SideBar_HTMLHostWindow { }else { ;;;マウスの現在位置 MouseGetPos, MouseX , MouseY ;;---------------------------------------------------------- WinActivate, ahk_id %OVW% CoordMode,Mouse , Relative MouseGetPos, MouseXR , MouseYR MouseMove, 0, %MouseYR% MouseMove, 0, 0 CoordMode,Mouse , Screen IfWinActive, ahk_class QWidget { ;TapinRadio ;;; TapinRadioの時 目標位置のデータを入れる xe = 600 ye = 400 we = 700 he = 400 }else{ ;;; Default 目標位置のデータを入れる xe = 0 ye = 0 we = 794 he = 1050 } WinGet, State, MinMax, A if State != 0 WinRestore, A ;;; 初期画面のデータを得る WinGetPos,xs,ys,ws,hs,A ;;; 左上初期位置 x1 = xs+300 y1 = ys+10 ;;; 左上目標位置 x2 = xe+300 y2 = ye+10 MouseClickDrag, LEFT , %X1%,%Y1%, %X2%, %Y2% , 3 Sleep, 50 WinMove,A , ,%xe%,%ye%,%we%,%he% ;;;マウスの位置 戻す MouseMove,%MouseX%,%MouseY%, 0 } Sleep,200 Run,%A_ScriptDir%\Components\nomousy.exe ;;nomousy.exe 必要 Sleep,100 この場合,タイトルバーのドラッグ位置が画面外でも 動作しますが,タスクバーや最上面指定のウィンドウと 重なる場合動作しません。 また,マウスユーティリティソフトのTyuTyuMouseが有効な場合うまく動作しません。 ↑この章先頭へ カーソルを一時的に消す 画面サイズ変更中はマウスが消えていた方が見かけがスマートかもしれません。 色々方法はありますが http //www.thefreewindows.com/3335/hide-andor-restrict-the-cursor-of-your-mouse-with-nomousy/ でダウンロードした nomousy.exe を MouseGesture2Lと同じフォルダーに入れておきます。 これで Run,nomousy.exe /hide で表示のon/offの切り替えになります。 nomousy version 1.5 はアニメーションカーソルにも対応しています。 nomousyを紹介した動画です。 http //www.youtube.com/watch?v=kOFZqnz1wzs| 画面のサイズ変更の操作画面 操作動画です。この例では ↗ の時に最大化 ↖ の時に L,Mサイズ画面 ↑ ↓ ← → の時に各方向半分 ↘ の時に最小化 になっています。 ※nomousyが時々誤作動するので現在は,"窓掴み"というソフトを使っています。December 2012 ↑この章先頭へ ↑Top 全画面最小化,元に戻す ●全画面最小化,元に戻すをトグルで実行 -MouseGesture.ahk- ●7.8. 実行するごとに2つの動作を交互に繰り返す を使った方法 ●アクションがデスクトップ上か,開いているアプリ上でなされたか判別して行う方法 ●タスクバーにあるアプリをすべて元に戻すには ○Restore All 操作動画 全画面最小化,元に戻すをトグルで実行 -MouseGesture.ahk- MouseGesture.ahkでこんな動作を定義したくなったとします。 一回目のアクションで、全てのアプリケーションをタスクバーに収納 二回目で全てのアプリケーションをもとに戻す 7.8. 実行するごとに2つの動作を交互に繰り返す を使った方法 長所 アクションの場所に関わらず交互に繰り返される。 欠点 このコマンドで全画面最小化を行ったのち, タスクバーから手動でアプリを元に戻した場合 手動の操作は無視され,設定通り一度元に戻すが実行される。 【1回目】全画面最小化→手動で画面表示→【2回目】元に戻す→ → 【3回目】全画面最小化→【4回目】元に戻す→以下略 if(MG_Counter()){ Send,#m }else{ Send,+#m } ↑この章先頭へ アクションがデスクトップ上か,開いているアプリ上でなされたか判別して行う方法 長所 前者の欠点は解消される 欠点 アクションがアプリ上かデスクトップ上かで結果が分かれるので アプリが開いていてもデスクトップ上でアクションが行われた場合 何も起こらない。 ;;OutputVar OutputVarWinは引数なので名称を変更しても良いです。 MouseGetPos,,,OutputVarWin WinGetClass, OutputVar , ahk_id %OutputVarWin% if OutputVar in Shell_TrayWnd,SideBar_HTMLHostWindow,Progman { Send,+#m }else { Send,#m } ↑この章先頭へ タスクバーにあるアプリをすべて元に戻すには ※実行に少し時間がかかります。 対の動作で適当なものが無く単体での操作を想定しています。 これを前の2つの式のトグルにするには, Send,+#m の所を下の式に置き換えればokです。 -出典- すべてのウインドウを「最大化⇔元にもどす」 としてくれるプログラム ◆こんなソフトウェアつくってください~Part5~◆ http //www5.atpages.jp/soft186/setumei/5-624.html| (↑製作時間 00 20 41 !! ) WinGet, id, List, , , Program Manager ToolTip ,Restore all ;調整が済んだら消す。 Loop, %id% { t = id%A_Index% WinGetTitle, title, ahk_id %t% if title in スタート,付箋紙 PcHusen ;操作をしないウインドウのタイトル ;(カンマ区切り※カンマの前後の空白は除去されない。) continue if (title != ""){;タイトルが空白の場合操作をしない ;オリジナルの書き方の方がスマート ;; MsgBox,【%title%】;ここで元に戻すウィンドウのタイトルを表示 WinRestore, ahk_id %t% }} ToolTip;調整が済んだら消す。 ;;MouseGetPos,,,OutputVarWin;マウス直下のウィンドウを調べる ;;WinActivate, ahk_id %OutputVarWin%;マウス直下をアクティブ ↑この章先頭へ Restore All 操作動画 操作動画です。この例では ↘ の時に最小化 ↗ の後にすべて元に戻っています。 ↑この章先頭へ ↑Top
https://w.atwiki.jp/tdrfood/pages/2.html
メニュー トップページ 用語集 過去ログ リンク 他のサービス ここを編集
https://w.atwiki.jp/lockerroom/pages/2.html
メニュー トップページ プラグイン紹介 AuttoHotKey ActiveX.ahk ActiveXSample.ahk メニュー メニュー2 ここを編集
https://w.atwiki.jp/ahk-fan/pages/20.html
2008-01-23 version 0.31 change shift enter to send alt + ` ; onehand.ahk version 0.3 by HONMA, Takeru December 28, 2007. ; onehand.ahk version 0.2 by HONMA, Takeru December 12, 2007. ; onehand.ahk version 0.1 by HONMA, Takeru November 28, 2007. ; Originally written by apoll (http //de.autohotkey.com/forum/topic1335.html).
https://w.atwiki.jp/poretore9999/pages/13.html
メニュー トップページ 携帯用メニュー 更新履歴 取得中です。
https://w.atwiki.jp/hid_ahk/pages/14.html
テンキーをF13~F24にする テンキーをF13~F24にする注意点(重要) (1)ChangeKey をインストールする (2)ChangeKeyでテンキー(Numpad系)をF13~F24にする (3)「HID Macros と Autohotkey を連携させるの手順(1)から(7-2)」を行う。 (4)Saiがアクティブ時、且つUSBテンキー①ならキーカスタマイズ、それ以外なら通常のテンキーにするサンプル 注意点(重要) 以下を実行するとキーボードのテンキーもF13~F24に変更されます。これはあくまでペイントツールSAIがAutohotkeyよりもLowレベル(OSに近いところ)でキー情報を取得してしまい、ビュー系ショートカット(Shift+テンキー)が誤発動してしまうのを回避するために行う処置です。 SAIのビュー系ショートカットが誤発動する原因。Autohotkeyを使ってテンキーにShiftを割り当てると、SAIがAutohotkeyよりもLowレベル(OSに近いところ)でテンキーとして認識してしまい、Autohotkeyで割り当てたShiftとSAI側で認識しているテンキーの両方が押されたこととなり、SAIのビュー系ショートカット(Shift+テンキー)が誤発動します。これを回避するため、テンキーの基本割り当てをF13~F24へ変更し、SAIがShift+F13(~F24)と認識しても、このショートカットに何も割り当てられていないため何も起こらないということです。 SAIのような特殊なものを除き、一般的なアプリケーションソフト(PhotoshopやIllustrator等)はAutohotkeyよりもLowレベルでキー情報を取得することはありませんので、USBデバイス(USBキーボード、USBテンキー、USBコントローラー等)ごとの独立したキー割り当てはHID Macros と Autohotkey を連携させるの設定だけで大丈夫です。 (1)ChangeKey をインストールする ChangeKeyをインストールする。 (2)ChangeKeyでテンキー(Numpad系)をF13~F24にする ChangeKeyを実行する。 ChangeKeyのウィンドウが開いたら、テンキーの「1」キーを選択(クリック)。 「【1 】キーをどのキーに変更しますか?」というウィンドウが表示されるので右上の「Scan Code」をクリック。 スキャンコードを直接入力するウィンドウが表示されるので「0064」(0x0064はF13のスキャンコード)を入力して「OK」。 テンキーの「2」キーを選択(クリック)。 「【2 】キーをどのキーに変更しますか?」というウィンドウが表示されるので右上の「Scan Code」をクリック。 スキャンコードを直接入力するウィンドウが表示されるので「0065」(0x0065はF14のスキャンコード)を入力して「OK」。 以下、下記表を参考にテンキーの3、4、6~9、0、ドット(.)、+、ー にF15~F24を割り当てる。 割り当てが完了したら「登録」→「現在の設定内容で登録します」を選択し、Windowsを再起動する。 USBテンキーのキー ChangeKeyで割り当てるキー スキャンコード 1 F13 F13 = 0x0064 2 F14 F14 = 0x0065 3 F15 F15 = 0x0066 4 F16 F16 = 0x0067 5 変更しない 6 F17 F17 = 0x0068 7 F18 F18 = 0x0069 8 F19 F19 = 0x006a 9 F20 F20 = 0x006b 0 F21 F21 = 0x006c .(ドット) F22 F22 = 0x006d Tab 変更しない / * BackSpace - F23 F23 = 0x006e + F24 F24 = 0x0076 Enter 変更しない (3)「HID Macros と Autohotkey を連携させるの手順(1)から(7-2)」を行う。 「HID Macros と Autohotkey を連携させるの手順(1)から(7-2)」を実施する。 (4)Saiがアクティブ時、且つUSBテンキー①ならキーカスタマイズ、それ以外なら通常のテンキーにするサンプル USBテンキーを複数接続(①と②)している環境でSaiがアクティブなときだけキーカスタマイズし、その条件以外は通常のテンキー入力がされるサンプルです。 +←サンプルを表示する #SingleInstance, Force #Persistent OnMessage(99999, "HidMacros") Menu, Tray, Add , GetScript return ; Autoexecセクション はここまで GetScript ; スクリプトをクリップボードにコピーする DetectHiddenWindows, On SetTitleMatchMode,RegEx Hwnd = WinExist(".*\\ahk_hidmacros.ahk\s-\sAutoHotkey.* ahk_class AutoHotkey") WinGetTitle, WinTitle, ahk_id %Hwnd% Clipboard = hWnd = FindWindow ( "AutoHotkey", `"%WinTitle%`" ) Clipboard = %Clipboard%`nIf hWnd then`n Call PostMessage(hWnd, 99999, 1, 1 ) Clipboard = %Clipboard%`nEnd If msgbox, %Clipboard%`nをクリップボードにコピーしました。 DetectHiddenWindows, Off return ; HidMacros( [wParam, lParam, msg, hwnd] ) 引数は省略可 HidMacros(wParam, lParam) { ; 第三と第四引数は必要ないので省く。 If ( wParam = 1 ) { ; USBテンキー① なら IfWinActive, ahk_class sfl_window_class ; Saiがアクティブなら { If ( lParam = 1 ) { ; F13(テンキー1) なら send, {space down} ; spaceを押し下げる ※Saiなら手のひらツール keywait, F13 ; F13(テンキーの1)を開放するまで待つ send, {space up} ; spaceを放す } Else If ( lParam = 2 ) { ; F14(テンキー2) なら send, {alt down} ; Altを押し下げる ※Saiならスポイト keywait, F14 ; F14(テンキー2)を開放するまで待つ send, {alt up} ; Altを放す } Else If ( lParam = 3 ) { ; F15(テンキー3) なら send, {alt down}{space down} ; AltとSpaceを押し下げる ※Saiならビュー回転 keywait, F15 ; F15(テンキー3)を開放するまで待つ send, {space Up}{alt up} ; AltとSpaceを放す } Else { ; 他のキーは通常のテンキーにする Gosub, TenkeyMode } } Else { ; Saiが非アクティブなら Gosub, TenkeyMode } } Else If ( wParam = 2 ) { ; USBテンキー②なら Gosub, TenkeyMode } Else { ; 他USBデバイスなら Gosub, TenkeyMode } return TenkeyMode ; 通常のテンキーにする tenkeys = Numpad1|Numpad2|Numpad3|Numpad4|Numpad5|Numpad6|Numpad7|Numpad8|Numpad9|Numpad0 tenkeys = %tenkeys%|Numpaddot|Tab|NumpadDiv|NumpadMult|Bs|Numpadsub|Numpadadd|NumpadEnter Loop, Parse, tenkeys, | { If ( lParam = A_Index ) send, {%A_LoopField%} } return } このサンプルをDownloadする ファイル名やディレクトリがHID Macrosで設定したものと異なると動作(連携)しません。元ファイルを上書きコピーするか、中身だけを元の ahk_hidmacros.ahk にコピペして実行してください。 スクリプトファイルのファイルエンコーディングについてアップロードしているスクリプトサンプルは全てShift JIS形式で保存しています。そのままだとAutohotkey_L Unicode版(以後、L版)で動作しません。L版で利用するにはスクリプトサンプル(ahk_hidmacros.ahk)をテキストエディタ(NotePad等)で開き、 UTF-8 形式で保存(上書き保存)してから利用してください。参考サイト:テキストをUTF-8形式で保存する。